<?php

/*
rest 风格API
具有无限极权限控制功能
权限控制实现在PermitMiddle中,
权限表和路由定义是一一对应的
权限alias 对应到每一级路由
每个操作需要路由id的均放在路由最后
*/

$app->group(['prefix' => 'v1', 'namespace' => 'Admin'], function () use ($app) {
    // 用户注册
    $app->post('/register', 'IndexController@register');
    //用户登录
    $app->post('/login', 'IndexController@login');

    //要登录之后才能操作的模块
    $app->group(['middleware' => 'login'], function () use ($app) {
        $app->get('/', 'IndexController@index');

        $app->group(['middleware' => 'permit'], function () use ($app) { // 一下操作需要检测权限
            //系统管理模块, 一级菜单
            $app->group(['prefix' => 'system'], function () use ($app) {    //一级菜单
                // 用户管理, 二级菜单
                $app->group(['prefix' => 'user'], function () use ($app) {  // 二级菜单
                    //三级菜单或具体操作, 当然这样还可以实现无限极分类

                    //这个模块只有二级菜单, 下面的是具体操作
                    $app->get('index', 'UserController@index');   //用户列表
                    $app->get('show/{id}', 'UserController@show');  //用户详情
                    $app->put('update/{id}', 'UserController@update');  //修改用户信息
                    $app->delete('delete/{id}', 'UserController@delete');   //删除用户
                    $app->get('roles/{id}', 'UserController@getRoles'); //获取用户角色
                    $app->post('bindroles/{id}', 'UserController@bindRoles');    //用户绑定角色

                });

                // 角色管理, 二级菜单
                $app->group(['prefix' => 'role'], function () use ($app) {  // 二级菜单
                    //没有三级菜单, 下面是具体操作
                    $app->get('index', 'RoleController@index');   //角色列表
                    $app->post('create', 'RoleController@create');    //添加角色
                    $app->put('update/{id}', 'RoleController@update'); //修改角色
                    $app->delete('delete/{id}', 'RoleController@delete'); //删除角色
                    $app->get('permits/{id}', 'RoleController@getPermits');    // 获取角色权限
                    $app->post('bindpermits/{id}', 'RoleController@bindPermits');   //绑定角色权限

                });

                //权限管理, 二级菜单
                $app->group(['prefix' => 'permit'], function () use ($app) {  // 二级菜单
                    //没有三级菜单, 下面是具体操作
                    $app->get('index', 'PermitController@index');   //权限列表
                    $app->post('create', 'PermitController@create');    //添加权限
                    $app->put('update/{id}', 'PermitController@update'); //修改权限
                    $app->delete('delete/{id}', 'PermitController@delete'); //删除权限
                });

            });
        });

    });
});